package com.itheima.edu.info.manager.service;

import com.itheima.edu.info.manager.dao.StudentDao;
import com.itheima.edu.info.manager.domain.Student;

public class StudentService {
    StudentDao dao = new StudentDao();

    //业务员中的添加方法
    public boolean addStudent(Student stu) {
        //1. 指挥库管对象进行添加学生动作
        return dao.addStudent(stu);//2. 将库管添加学生的结果返回给上一级
    }

    //业务员中的判断学号是否存在
    public boolean isExists(String id) {
        //1. 指挥库管将数据仓库中所有的学生信息都查出来
        Student[] stus = dao.findAllStudent();
        //2. 拿着本次要校验的学号id去数据仓库中进行匹配,看看有没有这个学号
        //2.1 标记位: 先假设本次要查找的sid在系统中没有
        boolean flag = false;//标记位思想: 先假设allStudents装的全是null
        //2.2 遍历stus
        for (int i = 0; i < stus.length; i++) {
            //2.3 取出当前索引位置的学生对象
            Student stu = stus[i];
            //2.4 只要当前学生对象不为null,并且当前学生对象的学号和要查找的学号sid一致时,才说明这个学号被占用了,这时候修改标记
            if (stu != null && stu.getId().equals(id)) {
                flag = true;
            }
        }
        //3. 出了循环,直接返回flag
        return flag;
    }

    //业务员中的获取所有学生信息
    public Student[] findAllStudent() {
        //1. 指挥库管对象将数据仓库中所有数据查到
        Student[] stu = dao.findAllStudent();
        boolean flag = false;
        //遍历数组
        for (int i = 0; i < stu.length; i++) {
            //拿到每一个元素,如果有一个元素不为null,则推翻假设,重置标记位true
            Student student = stu[i];
            if (student != null) {
                flag = true;
            }
        }
        if (flag) {
            return stu;
        } else {
            return null;
        }
    }

    public void deleteStudentById(String delId) {
        dao.deleteStudentById(delId);
    }

    public void updateStudent(String updatelId, Student newStu) {
        dao.updateStudent(updatelId,newStu);
    }
}
